package com.rzcode.coinex.kernel.dao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.rzcode.coinex.kernel.common.enums.CommonStateEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;


/**
 * 会员地址实体类，用于存储会员的数字货币地址信息。
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("member_address")
public class MemberAddress {

    /**
     * 地址ID，主键，自动生成的唯一标识。
     */
    @ApiModelProperty(value = "地址ID", required = true, example = "1")
    private Long id;

    /**
     * 创建时间，记录地址创建的时间戳。
     */
    @ApiModelProperty(value = "创建时间", example = "2023-01-01 12:00:00")
    private LocalDateTime createTime;

    /**
     * 删除时间，记录地址被标记为删除的时间戳。
     */
    @ApiModelProperty(value = "删除时间", example = "2023-01-01 12:00:00")
    private LocalDateTime deleteTime;

    /**
     * 关联的币种，地址对应的数字货币类型。
     */
    @ApiModelProperty(value = "关联的币种", required = true)
    private Coin coin;

    /**
     * 地址字符串，数字货币的接收地址。
     */
    @ApiModelProperty(value = "地址字符串", required = true, example = "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa")
    private String address;

    /**
     * 状态，标识地址的有效性（正常、冻结等）。
     */
    @ApiModelProperty(value = "状态", required = true, example = "NORMAL")
    private CommonStateEnum status = CommonStateEnum.NORMAL;

    /**
     * 会员ID，地址所属的会员标识。
     */
    @ApiModelProperty(value = "会员ID", required = true, example = "1")
    private Long memberId;

    /**
     * 备注，地址的额外说明或备注信息。
     */
    @ApiModelProperty(value = "备注", example = "这是我的比特币地址")
    private String remark;
}

